Docker 워크플로우: Dockerfile → Docker 이미지 → Docker 컨테이너
Docker Best Practice
1. slim
또는 alpine
베이스 이미지 사용
- 일반 이미지보다 크기가 훨씬 작음
- 보안성 향상, 자원 소비 감소
2. latest
태그 사용 지양
- 특정 버전 명시 권장
- 버전 변경 시 예상치 못한 문제 방지
3. 멀티 스테이지 빌드 활용
- 최종 이미지 크기 추가 감소
- 빌드 환경과 실행 환경 분리
4. HEALTHCHECK
포함
- 컨테이너 정상 작동 여부 확인 가능
- Docker Compose, Kubernetes 배포 시 유용
5. .dockerignore
사용
- 불필요한 파일 빌드 컨텍스트에서 제외
- Dockerfile 간결화, 민감 정보 유출 방지
6. --mount=type
옵션 활용
RUN --mount=type=cache,target=/root/.cache/go-build \
- 특정 RUN 명령에 범위 한정된 마운트
- 빌드 성능 향상, 안전한 비밀 정보 전달 가능
Inner-Loop Developer Workflow
- 로컬 개발에 컨테이너 사용
- 개발 환경과 프로덕션 환경 간 불일치 감소
Docker 도구 및 기능
Docker Init
- Docker Desktop 4.1+ 버전에서 사용 가능
- Docker 관련 파일 생성 간소화
Compose Watch
- 파일 변경 감지 및 자동 처리
- 모드: Sync, Rebuild, Sync+restart
- 컨테이너 내 실시간 개발 가능
Compose Profiles
- 환경별 다른 서비스 세트 정의 가능
- 예: 개발 환경에만 phpMyAdmin 포함
--profile
플래그로 활성화
Docker Scout
- 다양한 취약점 스캐닝 도구 결과 집계
- 이미지 보안 문제 통합 뷰 제공
- 오픈소스 종속성 취약점 식별
- 주의: Scout는 직접 스캔 안 함, 타 도구 결과 수집/제시